package vashion.azeroth.core.item.pojo;

import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.springframework.util.CollectionUtils;
import vashion.azeroth.core.pojo.BaseObject;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by tingting on 15/9/4.
 * 商品的sku属性
 */
@Data
public class ItemSkuDO extends BaseObject {

    /**
     * 主键
     */
    private long id;

    /**
     * 无线端Id
     */
    private long iosId;

    /**
     * 创建时间
     */
    private Date gmtCreate;

    /**
     * 修改时间
     */
    private Date gmtModified;

    /**
     * propertyValueIdArr
     */
    private String propertyValueIdArr;
    
    /**
     * 商品颜色编码和名字
     **/
    private String color;

    /**
     * sku对应的详细信息
     */
    private Map<Long, PropertyValueDO> propertyValueDOMap;

    /**
     * sku对应的详细信息 list
     */
    private List<PropertyValueDO> propertyValueDOList;

    /**
     * 商品ID
     */
    private long itemId;

    /**
     * 创建者id
     */
    private long userId;

    /**
     * 库存
     */
    private long stock;

    /**
     * 状态
     */
    private Integer status;

    /**
     * sku图片
     */
    private String pic;

    /**
     * 销售量
     */
    private int sold;


    /**
     * 标题
     */
    private String itemTitle;

    /**
     * 原价，分单位
     */
    private long itemPrice;

    /**
     * 商品主图
     */
    private String itemPic;

    /**
     * 会员价
     */
    private long vipPrice;

    /**
     * 类目Id
     */
    private long categoryId;

    public long getVipPrice() {
        return vipPrice > 0 ? vipPrice : itemPrice;
    }


    public long getIosId() {
        return id;
    }

    public String getSkuName() {
        if (CollectionUtils.isEmpty(this.propertyValueDOList)) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (PropertyValueDO propertyValueDO : propertyValueDOList) {
            sb.append(propertyValueDO.getValue() + " ");
        }
        
        return sb.toString();
    }

    /**
     * 根据 propertyValueIdArr 获取value IdList
     *
     * @return
     */
    public List<Long> getPropertyValueList() {
        List<Long> resultList = new ArrayList<Long>();
        if (StringUtils.isBlank(this.propertyValueIdArr)) {
            return resultList;
        } 
        if (!this.propertyValueIdArr.contains(",")) {
        	resultList.add(NumberUtils.toLong(propertyValueIdArr));
        }
        for (String idStr : this.propertyValueIdArr.split(",")) {
            resultList.add(NumberUtils.toLong(idStr));
        }
        return resultList;
    }

}
